메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

리눅스 임베디드 & 시스템 프로그래밍

한빛미디어

|

2003-09-24

|

by HANBIT

13,609

† Note: 본 기사는 「마이크로 소프트웨어」 9월호 Book 벤치마크를 발췌하여 정리한 기사입니다. 본 기사의 원문은 이곳을 클릭하시면 볼 수 있습니다. 원문 기사에 제작에 참여해주신 분들은 다음과 같습니다. 기획/정리: 강경수 기자, 글: 고려대 하나와 영 벤치마크팀(http://oaz.korea.ac.kr)
지난 2002년 11월부터 3개월 동안 대표적인 임베디드 리눅스 포털 사이트인 "LinuxDevices.com"에서 실시한 "임베디드 리눅스 개발자 대상 설문 조사"에 의하면 "향후 2년 이내에 임베디드 리눅스를 사용하게 될 확률이 매우 높다 혹은 이미 사용중이라고 답한 사람이 67% 이상으로 조사돼 임베디드 리눅스에 대한 개발자들의 큰 기대를 보여주고 있다. 실제로 이런 기대에 부응이라도 하듯이 임베디드 리눅스는 주로 PDA, 휴대폰 등의 휴대 단말기 시장에서 이미 다양하게 적용되어 제품화 단계를 거쳤거나 시제품으로 나와 있는 예가 많다. 이러한 임베디드 환경에서 리눅스가 우리나라에서도 인기를 끄는 휴대 단말기 시장 외에 네트워크 장비, 통신기기, 가전제품 등에도 그 적용이 이뤄질 것이라고 하니 사뭇 기대된다. 리눅스 환경은 많이 접해보았지만 임베디드 리눅스는 생소한 독자들도 있을 것이다. 임베디드 리눅스는 기본적으로 범용적인 컴퓨팅 환경에서의 키보드, 마우스, 모니터 같은 것들과 거리가 먼 것을 지향하는 환경이다. 때로는 터치 스크린이 그 인터페이스가 될 수도 있고, DVD 플레이어 등의 재생 버튼 등이 그것이 될 수도 있다. 이처럼 임베디드 환경에서의 리눅스 프로그래머는 시스템적 차원에서의 프로그래밍을 해야 하는 셈이다. 운영체제 그 자체를 고치는 것 그리고 자신만의(또는 회사에서 제시한) 어떤 코어나 인터페이스에 맞추어 개별화시키는 작업은 리눅스에 대한 더 심화적인 이해를 요구한다.


참고기사
LinuxDevices.com 2003 임베디드 리눅스 시장 조사 - 1부, 설문조사 결과
LinuxDevices.com 2003 임베디드 리눅스 시장조사 - 2부, 설문조사 분석



따라서 임베디드 리눅스나 시스템 차원에서의 리눅스 프로그래밍은 리눅스에 대해 알고 있다는 가정 하에 중상급자나 실무자가 접근할 수 있는 한 차원 높은 리눅스 세계다. 임베디드 리눅스는 우리가 접할 수 있는 범용적인 컴퓨터에서 좀더 실용적이고 간결한 인터페이스로 구성된 장치에 탑재 가능한 OS의 꿈을 이뤄냈다. 또한 기본적으로는 컴퓨팅 환경에서의 시스템 프로그래밍 또한 마찬가지이다. 범용적인 환경에서 좀더 최적화된 환경을 구성해내는 데 있어 리눅스는 탁월하다. 이번 벤치마크에서는 범용 인터페이스에서의 시스템 프로그래밍과 다양한 인터페이스에서의 임베디드 리눅스 프로그래밍을 중점적으로 다룬 서적들을 소개한다.


「마이크로소프트웨어」 서적 벤치마크 1위 선정 도서

IT EXPERT, 임베디드 리눅스

참고 도서

IT EXPERT, 임베디드 리눅스
박재호

임베디드 리눅스 서적 가운데 초중급자 수준의 독자에게 권할만한 책이다. 임베디드 관련 서적 가운데 깊지 않은 내용과 꼼꼼하지만 부담 없는 구성으로 리눅스는 간혹 접했으나 임베디드는 처음 접하는 독자에게 유용할 것이다. 특히 이 책은 저자의 실무 경험과 탄탄한 개념을 바탕으로 이뤄져 있다. 임베디드 시스템의 개념 설명으로부터 시작해서 리눅스, 윈도우 등의 운영체제, 임베디드 리눅스 개발 방법을 차근차근 초보자 입장에서 설명하고 보드에 관한 설명도 빼놓치 않았다. 이외에도 드라이버를 보드에 로딩하는 방법, 임베디드 리눅스 환경에서 리눅스 응용 프로그램을 개발하는 방법, 상용 프로그램으로의 패키지화 등도 설명하고 있다. 무엇보다 책의 곳곳에 저자의 트릭과 응용될 수 있는 조그마한 알찬 팁 등이 담겨져 있고, 플랫폼별 개발 방법과 부트스트랩 로더 이식을 비롯한 리눅스 컴파일 등을 다룬 것이 눈에 띈다. 그러나 깊은 수준까지 강조하지 않기 때문에 이 책을 먼저 습득한다면 전공 서적 등 다수의 전문서를 참고해야 할 것이다. 그 외에도 임베디드 리눅스의 특성상 기본적으로 인터넷 등을 통해 임베디드에 관한 최신의 소식, 그리고 실무 경험 등이 중요할 것이다. 앞서 이야기한 시스템 프로그래밍 차원의 커널 분석도 필수적일 것이다. 또한 임베디드 운영체제의 공통적 특성은 범용적인 인터페이스에 국한된다는 것이 아니라는 것이다. 임베디드 시스템에 있어서 넓게는 하드웨어적인 부분까지 노하우까지도 있어야 한다. 이를 정진하기 위한 초석으로 이 책을 선택한다면 분명 좋은 선택이라 생각한다.



추천도서

리눅스 커널의 이해

리눅스 커널의 이해, 개정판
리눅스의 가장 큰 매력이라고 한다면 공개되어 있는 소스를 자신의 기호에 맞게 수정하여 나만의 OS 환경을 꾸밀 수 있다는 것이다. 리눅스를 조금이라도 접해본 사람이라면 이런 리눅스의 매력을 알고 있을 것이다. 하지만 막상 공개되어 있는 소스를 자신이 원하는 방식으로 꾸미고 싶어도 어디서부터 시작해야 하는지, 그리고 무엇을 해야 할지 막막한 것이 현실이다. 그런 의미에서 이 책은 리눅스라는 운영체제를 이해하는데 더없이 좋다고 할 수 있다. 메모리와 프로세서, 파일 시스템과 입출력 등 운영체제의 가장 기본이 되는 내용들을 함수 단위까지 세부적으로 자세히 설명하고 있지만 네트워크 분야는 그 내용의 방대함으로 인해 이 책에서는 다루고 있지 않다. 하드웨어적인 내용들이 많이 포함되어 있기 때문에 리눅스라는 운영체제의 특징뿐만 아니라 자료구조, 알고리즘, 각종 프로그래밍 기법 등을 어느 정도 알고 있어야 책의 내용을 이해하는데 무리가 없을 것이다. 그만큼 시스템의 최하부 구조까지 자세하게 설명을 하고 있다는 얘기이다. 주로 i386 계통의 하드웨어에서 동작하는 리눅스의 특징을 다루고 있어 인텔 계열의 CPU 특징과 어셈블리 언어에 대하여 사전 지식이 있어야 내용을 소화해 낼 수 있을것이다. 매 장에서 다룰 내용을 간략하게 설명하고 그와 관련된 용어나 이론 등을 보충한다. 그런 후 각각의 이론이나 기술들이 실제 소스 코드 수준에서 어떤 식으로 구현되어 있는지 함수를 하나씩 보면서 설명한다. 함수를 설명할 때도 함수의 역할과 의미를 번호로 매겨가며 순차적으로 자세히 설명하는 방식을 많이 사용하고 있다. 이런 방식은 단순한 함수의 기능을 알고 가는 것을 넘어서 내부적으로 어떤 방식으로 시스템이 돌아가고 있는지 이해를 하는 데 큰 도움이 된다. 함수의 설명이 끝나면 매 장의 마지막 부분에는 리눅스의 차기 버전에서 그 내용이 어떤 식으로 변할 것인지 간략하게 얘기하고 있다. "리눅스 2.4 예상"이라는 소제목으로 다음 버전의 리눅스의 모습을 다루고 있는데, 사실 이 책이 출판된 시기가 리눅스 2.4가 나오기 바로 전이고, 출간 후 시간도 오래 지났기에 "예상"이라는 단어가 지금 보기에는 적절하지 않아 보인다. 하지만 리눅스 2.4의 내용이 과거의 리눅스에서 어떻게 달라졌는지 정리해준 부분은 리눅스가 어떻게 변했는지를 알려주는 중요한 힌트가 된다는 점에서 적은 내용이지만 꼭 필요한 부분이라 하겠다. 리눅스의 커널을 다룬 서적들이 많이 있지만 이 책 만큼 자세하게 다룬 것은 그리 많지 않다. 내용이 어려운 만큼 책의 내용을 자신의 것으로 소화한다면 리눅스라는 운영체제가 더 이상 해커들의 전유물은 아닐 것이다. 전체적으로 깔끔한 번역과 많은 양의 주석은 책의 내용을 좀더 쉽게 이해할 수 있도록 도와준다.

IT EXPERT, 유닉스 시스템 프로그래밍

IT EXPERT, 유닉스 시스템 프로그래밍
이 책의 머리말에는 "당신은 진정한 프로그래머인가 라는 명제를 두고 그것은 당신이 두 권의 컴퓨터 잡지를 구독하고 있는냐 있지 않느냐"라는 부분으로 시작한다. 단순하지 않은 질문을 단순한 대답으로 처리한 것을 보면 작가는 최적화나 짧고 강력한 코드를 예찬하는 유닉스 프로그래머임이 틀림없다. 총 4부로 이루어져 있다. 1부는 시스템 프로그래머가 꼭 알아야 할 사항들을 다루고 있다. 이를테면 vi 에디터(이 책은 리눅스 시스템을 다루고 있다)나 man 페이지 이용법 혹은 디버거나 make 같은 관리 툴을 다루고 있다. 그리고 셸 프로그래밍을 다뤄 유닉스 시스템에서 프로그래밍을 편리하게 한다. 2부는 유닉스 명령어 만들기 부분이다. 유닉스 시스템 프로그래밍을 공부한 독자들이라면 알만한 내용들이다. 명령어마다 옵션 기능을 구현해 놓았다. 구현해 놓은 명령어들은 ls, cat, cp, head, uniq, od, wc, du, finger, ps, df, find, grep이며 코드를 이해하기 쉽게 주석을 달아 놓았다. 3부는 실제 프로그램을 작성하는 것으로 실무 프로그래밍에 목말라하는 초보 프로그래머들에게 기분 좋은 실험장이다. 간단한 포트폴리오 작성과 실제 구현을 차례대로 설명해 놓았다. 예제는 서버에 시스템 정보를 요청해서 받아오는 것으로 시스템 로그와 소켓 프로그래밍이 관련되어 있다. 리눅스에서 로그 서버 작성에 관심있는 독자라면 눈요기로 볼 만한 예제이다. 4부는 부록으로 이 책의 절반을 할당해 놓았다. 내용인즉슨 시스템 함수와 중요 헤더 파일의 정리, 포인터와 시그널의 사용을 제대로 이해해야 진정한 시스템 프로그래머가 된다는 것이다. 시스템 함수는 I/O 함수와 소켓 함수, 더 나아가 세마포어와 같은 멀티 프로세싱과 관련된 함수들로, 적당한 예제들과 함께 소개한다. 유닉스 프로그래밍 책을 보면 항상 느끼는 점이 있는데, 모두 C로 작성되어있다는 것이다. 유닉스 자체가 거의 C로 만들어져 있고, C로 작성하면 코드가 이해하기 쉽다는 것이 변명이 되겠지만 C++로 클래스를 이용한 예제는 한번도 본 적이 없다. 이는 예제들이 모두 평범하고 작은 것들로만 이루어져 있음을 보여준다.

IT EXPERT, 임베디드 리눅스

IT EXPERT, 임베디드 리눅스
저자가 국내 유수 보드 공급업체의 보드를 사용해 개발의 전 단계를 각 플랫폼에서 테스트하면서 집필하여 축적해놓은 각종 노하우를 바탕으로 이론으로만 끝나지 않는 실질적인 방법론과 각종 간단 프로젝트 예시와 구현이 실려 있다. 일반적으로 임베디드 서적의 영문 원서나 번역 서적의 경우 한국 실정에 맞지 않거나 사용하는 언어의 의미 차이로 인하여 애를 먹기 쉽다. 하지만 이 책은 국내 실정에 알맞으면서 자세한 예까지 들어 임베디드 리눅스를 처음 접하는 사람에게 적합하다. 또한 필자의 실무경험 및 임베디드 전반에 대해 자세한 정보를 수록하고 있어 학교나 기업에서 임베디드 관련 분야를 처음 접하는 사람에게 권하고 싶은 책이다. 특히 원서 또는 전공서적을 접하기 전에 먼저 이 책을 보고 원서를 접하는 것이 좋은 접근방법이라고 생각한다. 전공 원서나 두꺼운 책을 먼저 접근하는 것보다 이 책 저자의 두터운 노하우를 바탕으로 기본기를 다루면 좋을 것이다. 부팅부터 이식 그리고 응용 프로그램 작성 및 패키징이 모두 초보자 입장에서 설명하고 같이 따라하는 방식으로 접근하기 쉽게 구성해 놓았다. 마치 소설책을 읽듯이 재미있게 읽을 수 있을 것이다. 임베디드 분야의 책 중에서 국내에서 출판되기 힘든 서적이 나왔다고 평가하고 싶다. 하지만 이 책은 깊이 있는 부분을 다루지 않고 있다. 그리고 초보자의 입장에서 개념과 설명을 위주로 소설 쓰듯이 써졌기 때문에 약간 내용이 가볍다는 생각이 들 수 있다. 그러다 보니 방대한 내용을 대충 넘어가는 경향이 있다. 그 예로 EXT2 파일 시스템에 대해 리눅스에서는 미닉스 파일 시스템의 단점을 극복하기 위해 사용했다고 언급되어 있을 뿐 그 단점이 어떤 단점인지 자세한 설명은 없다. 또한 현재의 EXT에도 문제가 있다고 말하지만 그 문제에 관한 설명이 누락되어 있어 자세한 부분을 파악하기에는 내용이 너무 적다.

기타 추천도서
  • 『Linux Programming Bible』 (글로벌, 2002) 권수호 저.
  • 『임베디드 리눅스』 (정보문화사, 2002) Craig Hollabaugh 저, 박재희 역.
  • 『리눅스 커널분석 2.4』 (가메출판사, 2003) 박장수 저.
  • 『리눅스 매니아를 위한 커널 프로그래밍』 (교학사, 2002) 조유근, 최종무, 홍지만 저.
  • 『리눅스 클러스터로 만드는 슈퍼 컴퓨터』 (영진.COM, 2003) 이정훈, 오영은, 김정석 저.
  • 『임베디드 시스템 & 임베디드 리눅스』 (사이텍미디어, 2002) 박영환 저.
TAG :
댓글 입력
자료실

최근 본 책0